#ifndef DATAPROCESSOR_H
#define DATAPROCESSOR_H

#include <string>
#include <vector>
#include <fftw3.h>
#include <queue>
#include <map>
#include <thread>
#include <future>

//#define FFT_Data_Number 40000000

class DataProcessor {
public:
	DataProcessor(const std::string& inputDir, const std::string& outputDir);
	~DataProcessor();

	// 处理多个文件并行
	//void processFiles(const std::vector<std::string>& filePaths);

	// 处理 FFT 及其他数据处理任务
	void processFFT(std::vector<double>* data, uint32_t dataCount, double SamplingRate, fftw_complex* fft_in, fftw_complex* fft_out, fftw_plan fft_plan);

	// 工具函数: 从Excel文件读取阻抗测量数据
	std::map<double, double> readImpedanceData(const std::string& filePath);


private:
	std::string inputDir_;  // 待处理数据文件夹
	std::string outputDir_; // 处理完成文件夹

	//std::vector<double> data_; // 存储读取的原始数据
	//std::vector<double> fftResult_; // FFT 结果
	//std::vector<double> frequencies_; // 频率数组
	//std::vector<double> magnitudes_; // 幅度
	//std::vector<double> phases_; // 相位

	std::map<double, double> impedanceData_; // 阻抗测量数据

	//fftw_complex* fft_in_; // FFT 输入数据
	//fftw_complex* fft_out_; // FFT 输出数据
	//fftw_plan fft_plan_; // FFT 计划
};

#endif // DATAPROCESSOR_H


/*
#include "DataProcessor.h"
#include <iostream>
#include <vector>

int main() {
	// 假设当前路径为工作目录
	std::string inputDir = "./data";
	std::string outputDir = "./out";

	// 创建数据处理对象
	DataProcessor processor(inputDir, outputDir);

	// 假设有多个文件需要处理
	std::vector<std::string> filePaths = {
		"file1.csv", "file2.csv", "file3.csv", "file4.csv"
	};

	// 使用多线程并行处理多个文件
	processor.processFiles(filePaths);

	return 0;
}
*/

